// 你正在参加一个多角色游戏，每个角色都有两个主要属性：攻击 和 防御 。给你一个二维整数数组 properties ，其中 properties[i] = [attacki, defensei] 表示游戏中第 i 个角色的属性。

// 如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级，则认为该角色为 弱角色 。更正式地，如果认为角色 i 弱于 存在的另一个角色 j ，那么 attackj > attacki 且 defensej > defensei 。

// 返回 弱角色 的数量。

#include<bits/stdc++.h>
using namespace std;

// 桶排序

class Solution {
public:
    int numberOfWeakCharacters(vector<vector<int>>& properties) {
        vector<vector<int>> p(100001);
        int res =0;
        int imax =0;
        for(auto i:properties){
            p[i[0]].emplace_back(i[1]);
        }
        for(int i=100000;i>=0;i--){
            // 最大的一个桶不可能找到，所以先于0比较，后面的每个桶都与大桶最大d比较
            for(auto x:p[i]){
                if(x<imax){
                    ++res;
                }
            }
            for(auto x:p[i]){
                imax = max(imax,x);
            }

        }
        return res;
    }
};